home *** CD-ROM | disk | FTP | other *** search
/ Magnum One / Magnum One (Mid-American Digital) (Disc Manufacturing).iso / d18 / nrpas13.arc / SVDVAR.PAS < prev    next >
Pascal/Delphi Source File  |  1991-05-01  |  761b  |  29 lines

  1. PROCEDURE svdvar(v: glnpbynp; ma,np: integer; w: glnparray;
  2.        VAR cvm: glcvm; ncvm: integer);
  3. (* Programs using routine SVDVAR must define the types
  4. TYPE
  5.    glnpbynp = ARRAY [1..np,1..np] OF real;
  6.    glnparray = ARRAY [1..np] OF real;
  7.    glcvm = ARRAY [1..ncvm,1..ncvm] OF real;
  8. in the calling program. *)
  9. VAR
  10.    k,j,i: integer;
  11.    sum: real;
  12.    wti: glnparray;
  13. BEGIN
  14.    FOR i := 1 TO ma DO BEGIN
  15.       wti[i] := 0.0;
  16.       IF (w[i] <> 0.0) THEN  wti[i] := 1.0/(w[i]*w[i])
  17.    END;
  18.    FOR i := 1 TO ma DO BEGIN
  19.       FOR j := 1 TO i DO BEGIN
  20.          sum := 0.0;
  21.          FOR k := 1 TO ma DO BEGIN
  22.             sum := sum+v[i,k]*v[j,k]*wti[k]
  23.          END;
  24.          cvm[i,j] := sum;
  25.          cvm[j,i] := sum
  26.       END
  27.    END
  28. END;
  29.